package com.cskaoyan.javase.oop1._14block._3static._0introduction;
/**
 * 静态代码块的引入
 * 什么是静态代码块？
 * 定义在类的成员位置，使用以下声明方式声明的代码块，称之为静态代码块
 * //成员位置
 * static{
 *   // 局部位置
 * }
 * //成员位置
 * 其实就比构造代码块,多了一个static修饰,其他地方一模一样.
 *
 * 这个语法只有一个需要注意的地方：
 * 静态代码块内部属于局部位置，在里面定义变量，就是一个仅在静态代码块中生效的局部变量。
 *
 * 静态代码块的作用:
 * 随着类加载的过程而执行，静态代码块可以看成是一个在类加载过程中，会自动调用的静态方法！
 * 主要的作用是用于给静态成员变量赋值！
 *
 * 总结一下,目前为止,在类加载过程中,给静态成员变量赋值的手段:
 *      1.默认初始化,具有默认值
 *      2.显式赋值
 *      3.静态代码块赋值
 * 以上三种赋值,默认初始化永远最先进行
 * 而显式赋值和静态代码块赋值也是按照代码的书写顺序从上到下执行的
 *
 * @since 16:02
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        System.out.println(A.staticNum);
    }
}
class A{

    static int staticNum = 100;
    static {
        staticNum = 200;
        // 局部变量
        int num = 10;
    }


}